home *** CD-ROM | disk | FTP | other *** search
/ Acorn User: The Risc OS Music Utilities CD / Acorn User: The Risc OS Music Utilities CD.iso / RISCSTER / RISCSRC3.ZIP / h / proto < prev    next >
Text File  |  2000-08-14  |  4KB  |  142 lines

  1. /*
  2.        _             __
  3.   ____(_)__ _______ / /____ ____
  4.  / __/ (_-</ __(_-</ __/ -_) __/
  5. /_/ /_/___/\__/___/\__/\__/_/
  6.  
  7. Napster client for RISC OS
  8. Copyright (C) 2000 Robert Dimond
  9.  
  10. Portions are based on gnap by Ryan Dahl.
  11.  
  12. This program is free software; you can redistribute it and/or modify
  13. it under the terms of the GNU General Public License as published by
  14. the Free Software Foundation; either version 2 of the License, or
  15. (at your option) any later version.
  16.  
  17. This program is distributed in the hope that it will be useful,
  18. but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20. GNU General Public License for more details.
  21.  
  22. You should have received a copy of the GNU General Public License
  23. along with this program; if not, write to the Free Software
  24. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
  25.  
  26. Bransley Cottage, Cleobury Mortimer, Kidderminster, WORCS. DY14 0BZ
  27. England. robdimond@cwcom.net
  28.  
  29. */
  30.  
  31. #include <stdio.h>
  32. #include <string.h>
  33. #include <ctype.h>
  34. #include "OS:socket.h"
  35. #include "OS:osfile.h"
  36.  
  37.  
  38. #define HOSTPORT 8875
  39. #define HOSTIP "208.184.216.222"
  40. /*#define HOSTIP "64.224.114.33"*/
  41. /*#define HOSTIP "204.244.63.65"*/
  42.  
  43. #define HOSTNAME "server.napster.com"
  44. #define VERSION_STRING /*"v2.0 BETA 3"*/ "RISCSTER 1.11"
  45.  
  46. typedef enum connect_level {
  47. notc, nap_res, alt_res, tc_redir, get_redir, tc_server, try_login, loggedin} connect_level;
  48.  
  49. typedef enum download_active {
  50. freesl, window, getinfo, tc, get_one, get_header, download} download_active;
  51.  
  52. typedef enum message_status {get_head, get_data} message_status;
  53.  
  54. typedef enum search_type {none, search, browse, complete} search_type;
  55.  
  56. typedef struct search_result {
  57.  char filename[255];
  58.  char id[100];
  59.  char user[30];
  60.  int size;
  61.  int bitrate;
  62.  int frequency;
  63.  int speed;
  64.  int number;
  65.  unsigned long int ip;
  66.  search_type type;
  67.  struct search_result * next;
  68. } search_result;
  69.  
  70. typedef struct transfer {
  71.  char user[30];
  72.  char filename[255];
  73.  char header[50];
  74.  char checksum[100];
  75.  int headcount;
  76.  FILE * filehandle;
  77.  /*int socket;*/
  78.  socket_s socket;
  79.  int tag;
  80.  int update_tag;
  81.  unsigned long int size;
  82.  unsigned long int totalsize;
  83.  unsigned long int oldsize;
  84.  download_active active;
  85.  int whandle;
  86.  struct search_result * searchres;
  87. } transfer;
  88.  
  89. typedef struct {
  90.  char header[300];
  91.  int hpos;
  92.  int active;
  93.  socket_s socket;
  94.  int command;
  95. } incoming;
  96.  
  97. void napster_resolve_redir(void);
  98. void napster_resolve_alt(void);
  99. int napster_poll(void);
  100. int ipconv(char * ip);
  101. int portconv(int port);
  102. void napster_get_best_host(unsigned int * ip, int * port, char * string);
  103. int napster_connect(void);
  104. int napster_serverconnect(unsigned int ip, int port);
  105. void napster_send(char * data, int type, int length);
  106. void napster_handle_input(void);
  107. void napster_handle_message(int mc, char * buffer);
  108. void napster_handle_download(int);
  109. void napster_handle_header(int);
  110. void napster_mess_error(char * message);
  111. void napster_mess_loginerror(char * message);
  112. void napster_mess_searchresponse(char * buffer);
  113. void napster_mess_completeresponse(char * line);
  114. void napster_mess_loginack(char * email);
  115. void napster_mess_alreadyreg(void);
  116. void napster_mess_regsuccess(void);
  117. void napster_mess_dlack(char * buffer);
  118. void napster_mess_motd(char * buffer);
  119. void napster_mess_searchend(void);
  120. int napster_mo_userlogin(char * username, char * password, int port, int connection, int new_user);
  121. int napster_mo_dlrequest(search_result * toget);
  122. void napster_download_end(int);
  123. char * napster_sanefile(char * file);
  124. int napster_init_server(void);
  125. int napster_end_server(void);
  126. void napster_incoming(socket_s newsocket);
  127. void napster_handle_inconheader(int ino);
  128. void napster_close(void);
  129. int nerror(os_error * err);
  130. void napster_handle_nfconnected(int tno);
  131. void napster_handle_one(int tno);
  132. void napster_mess_privatemessage(char * buffer);
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.